package com.jiabowen.store.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginInterceptor implements HandlerInterceptor {

    //在调用所有请求的方法之前调用的方法 DispatherServlet之前
    //只有第一个常用
    /**
     * 检测全局session对象中是否有uid数据，如果有则放行，如果没有重定向到登陆页面
     * @param request 请求对象
     * @param response 响应对象
     * @param handler 处理器：url + Controller : 映射
     * @return 如果返回值为true表示放行当前的请求，如果返回false则表示拦截当前请求
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response,
                             Object handler) throws Exception {
        //HttpServletRequest对象来获取session
        Object obj = request.getSession().getAttribute("uid");
        if (obj == null){
            //说明用户没有登陆过系统，则重定向回login.html页面
            response.sendRedirect("/web/login.html");
            //结束后续的调用
            return false;
        }

        //请求放行
        return true;
    }

    //在ModelAndView对象返回之后被调用的方法
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    //在整个请求所有关联的资源被执行完毕最后所执行的方法
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //asjlfkldfjlskadjfkslfaldkjsfas
        System.out.println(1234);
    }
}
